package com.qa.mapper;

import com.qa.dto.QuestionQueryDTO;
import com.qa.entity.Question;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * @author 徐
 */
@Mapper
public interface QuestionMapper {

    /**
     * 根据条件查询题目
     *
     * @param question 题目条件
     * @return 题目列表
     */
    List<Question> getQuestion(Question question);

    /**
     * 新增题目
     *
     * @param question 题目
     * @return 是否新增成功
     */
    @Insert("insert into question " +
            "(id, choice, answer, status, creator, open, question, kind) " +
            "values " +
            "(#{id}, #{choice}, #{answer}, #{status}, #{creator}, #{open}, #{question}, #{kind})")
    Integer addQuestion(Question question);

    /**
     * 根据分类id查询题目
     *
     * @param categoryId 分类id
     * @return 题目列表
     */
    @Select("SELECT * FROM question WHERE id IN (" +
            "    SELECT question_id FROM question_category WHERE category_id = 1" +
            ") and status = 1")
    List<Question> getQuestionByCategoryId(Long categoryId);

    /**
     * 根据条件查询题目
     *
     * @param questionQueryDTO 题目条件
     * @return 题目列表
     */
    List<Question> getQuestionByCondition(QuestionQueryDTO questionQueryDTO);

    /**
     * 根据条件查询题目（不包括该用户）
     *
     * @param questionQueryDTO 题目条件
     * @return 题目列表
     */
    List<Question> getQuestionNotUserByCondition(QuestionQueryDTO questionQueryDTO);

    /**
     * 编辑题目
     *
     * @param question 题目
     * @return 是否编辑成功
     */
    Integer editQuestion(Question question);

    /**
     * 删除题目（将状态改为不存在）
     *
     * @param id 题目id
     * @return 是否删除成功
     */
    @Update("update question set status = 0 where id = #{id}")
    Integer deleteQuestion(Long id);

    /**
     * 批量删除题目（将状态改为不存在）
     *
     * @param ids 题目id
     * @return 是否删除成功
     */
    Integer deleteQuestions(@Param("ids") List<Long> ids);
}
